Batch PreparedStatement এবং তার সুবিধা

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC) Spring JDBC এ PreparedStatement ব্যবহার |
68
68

NamedParameterJdbcTemplate স্প্রিং জেডিবিসি (Spring JDBC) এর একটি গুরুত্বপূর্ণ ক্লাস, যা SQL কুয়েরিতে নামকৃত প্যারামিটার ব্যবহার করার সুবিধা প্রদান করে। এটি সাধারণ JdbcTemplate এর উন্নত সংস্করণ, যেখানে প্যারামিটারাইজড কুয়েরি তৈরির সময় নামকৃত প্যারামিটার (Named Parameters) ব্যবহার করা যায়, যা কোডকে আরও পাঠযোগ্য, সহজ এবং ভুলমুক্ত করে তোলে।

NamedParameterJdbcTemplate কি?

NamedParameterJdbcTemplate একটি ক্লাস যা স্প্রিং জেডিবিসি ফ্রেমওয়ার্কের অংশ। এটি JdbcTemplate এর মত কাজ করে, তবে এটি SQL কুয়েরি এক্সিকিউট করার সময় প্যারামিটারাইজড কুয়েরিতে নামকৃত প্যারামিটার ব্যবহার করার সুযোগ দেয়। এর মাধ্যমে SQL কুয়েরি লেখার সময় প্যারামিটারগুলি নাম দ্বারা চিহ্নিত করা হয়, যেমন :param1, :param2, ইত্যাদি।

NamedParameterJdbcTemplate এর সুবিধাসমূহ:

  1. পাঠযোগ্য কোড: নামকৃত প্যারামিটার ব্যবহার করার মাধ্যমে কোডটি আরও পরিষ্কার এবং পাঠযোগ্য হয়। সাধারণত, প্যারামিটার মানগুলি ? চিহ্ন দ্বারা স্থাপন করা হয়, কিন্তু নামকৃত প্যারামিটার ব্যবহার করলে প্রতিটি প্যারামিটার কী কাজ করছে তা সহজে বোঝা যায়।
  2. ভুল হওয়া কম: যখন অনেক প্যারামিটার থাকে, তখন ? প্যারামিটারগুলো সঠিকভাবে ব্যবহার করা কঠিন হতে পারে। নামকৃত প্যারামিটার ব্যবহার করলে প্যারামিটারগুলোর অবস্থান ও অর্থ স্পষ্ট হয়ে ওঠে, ফলে ভুল হওয়ার সম্ভাবনা কমে।
  3. উন্নত প্যারামিটারাইজড কুয়েরি: যদি SQL কুয়েরিতে অনেক প্যারামিটার থাকে এবং তাদের অবস্থান নির্দিষ্টভাবে জানানো প্রয়োজন হয়, তাহলে নামকৃত প্যারামিটার সহজ এবং দক্ষ উপায় হিসেবে কাজ করে।
  4. ডাইনামিক কুয়েরি নির্মাণ: এটি ডাইনামিক SQL কুয়েরি তৈরি করতে সহায়তা করে, যেখানে প্যারামিটারগুলোর মান ডাইনামিকভাবে নির্ধারণ করা হয় এবং কুয়েরি চালানো হয়।

NamedParameterJdbcTemplate ব্যবহার করার উদাহরণ:

ধরা যাক, আমাদের একটি Employee টেবিল থেকে কিছু ডেটা পড়তে হবে যেখানে id এবং name প্যারামিটার হিসেবে ব্যবহার করা হবে।

১. কনফিগারেশন:

প্রথমে, NamedParameterJdbcTemplate এবং ডেটাবেস সংযোগ সেটআপ করা প্রয়োজন।

import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;

public class DataSourceConfig {

    public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
        DataSource dataSource = dataSource();
        return new NamedParameterJdbcTemplate(dataSource);
    }

    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }
}

২. NamedParameterJdbcTemplate এর ব্যবহার:

এখন, NamedParameterJdbcTemplate ব্যবহার করে SQL কুয়েরি এক্সিকিউট করা হবে।

import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

import java.util.List;
import java.util.Map;

public class EmployeeDao {

    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    public void setNamedParameterJdbcTemplate(NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
        this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
    }

    public List<Employee> getEmployeesByIdAndName(int id, String name) {
        String sql = "SELECT * FROM Employee WHERE id = :id AND name = :name";
        
        MapSqlParameterSource parameters = new MapSqlParameterSource();
        parameters.addValue("id", id);
        parameters.addValue("name", name);

        return namedParameterJdbcTemplate.query(sql, parameters, new EmployeeRowMapper());
    }
}

৩. RowMapper:

এখানে EmployeeRowMapper হল একটি কাস্টম ক্লাস যা RowMapper ইন্টারফেস ইমপ্লিমেন্ট করে, যেটি SQL কুয়েরি থেকে প্রাপ্ত রেকর্ডকে Employee অবজেক্টে ম্যাপ করবে।

import org.springframework.jdbc.core.RowMapper;

import java.sql.ResultSet;
import java.sql.SQLException;

public class EmployeeRowMapper implements RowMapper<Employee> {

    @Override
    public Employee mapRow(ResultSet rs, int rowNum) throws SQLException {
        Employee employee = new Employee();
        employee.setId(rs.getInt("id"));
        employee.setName(rs.getString("name"));
        // আরও প্রপার্টি সেট করুন
        return employee;
    }
}

কেন NamedParameterJdbcTemplate ব্যবহার করা হয়?

  1. নামকৃত প্যারামিটার: SQL কুয়েরি লেখার সময় ? ব্যবহার না করে নামকৃত প্যারামিটার যেমন :id, :name ব্যবহার করতে পারা যায়, যা কোডের পাঠযোগ্যতা বাড়ায়।
  2. নির্ভুল প্যারামিটার মান: যখন SQL কুয়েরিতে অনেক প্যারামিটার থাকে, তখন নামকৃত প্যারামিটার ব্যবহার করে তাদের অবস্থান ভুল হওয়ার সম্ভাবনা কমে।
  3. ডাইনামিক কুয়েরি: এটি ডাইনামিক SQL কুয়েরি তৈরিতে সহায়ক, যেখানে প্যারামিটারগুলোর মান কনফিগারেবল হয় এবং নির্দিষ্ট কুয়েরি তৈরি করা হয়।

সারাংশ:

NamedParameterJdbcTemplate স্প্রিং জেডিবিসির একটি শক্তিশালী ক্লাস যা SQL কুয়েরিতে নামকৃত প্যারামিটার ব্যবহারের সুবিধা প্রদান করে। এটি কোডের পাঠযোগ্যতা এবং ডাইনামিক SQL কুয়েরি নির্মাণে সহায়ক। যখন SQL কুয়েরিতে অনেক প্যারামিটার থাকে, তখন এটি ব্যবহারের মাধ্যমে কোড সহজ এবং ভুলমুক্ত করা যায়।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion